package com.ushine.web.template.transactional.facade;

import com.ushine.web.component.exception.ServiceException;
import com.ushine.web.template.transactional.model.FirstTransactionDO;
import com.ushine.web.template.transactional.model.SecondTransactionDO;

/**
 * @Author: yls
 * @Date 2022/2/14 11:21
 * @Description: 模拟复杂事务
 * @Version 1.0
 **/
public interface ITransactionFacade {
    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction  事务控制实体
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     */
    void insetFirstAndSecond(FirstTransactionDO firstTransaction, SecondTransactionDO secondTransaction);

    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction  事务控制实体
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     * @throws ServiceException 服务端自定义异常
     */
    void insetFirstAndSecondException(FirstTransactionDO firstTransaction, SecondTransactionDO secondTransaction) throws ServiceException;


    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction  事务控制实体
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/03/02 14:21
     * @throws ServiceException 服务端自定义异常
     */
    void insetNestedException(FirstTransactionDO firstTransaction, SecondTransactionDO secondTransaction) throws ServiceException;
}
